home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS03.ADF / C / cleanup.c < prev    next >
C/C++ Source or Header  |  1986-04-02  |  1KB  |  58 lines

  1. /*           CLEANUP.C - (c) 1985 John Hodgson          */
  2. /*           =================================          */
  3. /* Use CLEANUP regularly to filter illegal chars for ED */
  4. /* while converting CR's to LF's and removing redundant */
  5. /* CR's in CR/LF pairs for legibility.                  */
  6.  
  7. #include <lattice/stdio.h>
  8.  
  9. #define LF 10
  10. #define CR 13
  11.  
  12. main(argc,argv)
  13. int argc;
  14. char *argv[];
  15. {
  16.   FILE *rdptr,*wrtptr;
  17.   int c,predc,srclen,dstlen,filter,cr;
  18.  
  19.   printf("\nCLEANUP.C Text file cleanup utility (c) 1985 John Hodgson\n\n");
  20.  
  21.   if (argc!=3) {
  22.     printf("Usage : cleanup srcfile destfile\n");
  23.     exit(0);
  24.   }
  25.   if ((rdptr=(FILE *)fopen(argv[1],"r"))==NULL) {
  26.     printf("Error opening file %s for reading.\n",argv[1]);
  27.     exit(0);
  28.   }
  29.   if ((wrtptr=(FILE *)fopen(argv[2],"w"))==NULL) {
  30.     printf("Error opening file %s for writing.\n",argv[2]);
  31.     exit(0);
  32.   }
  33.   srclen=dstlen=cr=filter=predc=NULL;
  34.  
  35.   while ((c=getc(rdptr))!=EOF) {
  36.     srclen++;
  37.  
  38.     if ((c!=LF && c!=CR) && (c<' ' || c>127)) {
  39.       c=NULL;
  40.       filter++;
  41.     }
  42.  
  43.     if (c==LF && predc==CR) {
  44.       c=NULL;
  45.       cr++;
  46.     }
  47.     else predc=c;
  48.  
  49.     if (c==CR) c=LF;
  50.  
  51.     if (c!=NULL) { putc(c,wrtptr); dstlen++; }
  52.   }
  53.   fclose(rdptr); fclose(wrtptr);
  54.  
  55.   printf("Source file len = %d, Result file len = %d\n",srclen,dstlen);
  56.   printf("Chars filtered = %d, CR's removed = %d\n\n",filter,cr);
  57. }
  58.